{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:27:14.450452Z",
     "start_time": "2023-11-27T02:26:41.807294600Z"
    }
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "import torchvision\n",
    "from torchvision import datasets,transforms\n",
    "import matplotlib.pyplot as plt\n",
    "import torch.nn as nn\n",
    "import os\n",
    "import datetime"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "outputs": [],
   "source": [
    "data_transforms = {\n",
    "    'train':transforms.Compose([\n",
    "        transforms.Resize(230),\n",
    "        transforms.CenterCrop(224),\n",
    "        transforms.RandomHorizontalFlip(),\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))\n",
    "    ]),\n",
    "    'test':transforms.Compose([\n",
    "        transforms.Resize(230),\n",
    "        transforms.CenterCrop(224),\n",
    "        transforms.ToTensor(),\n",
    "        transforms.Normalize((0.5,0.5,0.5),(0.5,0.5,0.5))\n",
    "    ])\n",
    "}\n",
    "\n",
    "class_names = ['大车','小车']\n",
    "data_path ='F:/图像识别数据集/vechs'\n",
    "train_path = os.path.join(data_path,'train')\n",
    "test_path = os.path.join(data_path,'test')"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:35:06.022218Z",
     "start_time": "2023-11-27T02:35:06.001222700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "outputs": [],
   "source": [
    "trainset = datasets.ImageFolder(train_path,transform=data_transforms['train'])\n",
    "testset = datasets.ImageFolder(test_path,transform=data_transforms['test'])\n",
    "\n",
    "train_loader = torch.utils.data.DataLoader(trainset,batch_size=5,num_workers=4,shuffle=True)\n",
    "test_loader = torch.utils.data.DataLoader(testset,batch_size=5,num_workers=4,shuffle=True)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:35:06.780568100Z",
     "start_time": "2023-11-27T02:35:06.762575200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "def imshow(inputs):\n",
    "    inputs = inputs/2+0.5\n",
    "    inputs = inputs.numpy().transpose(1,2,0)\n",
    "    plt.imshow(inputs)\n",
    "    plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:36:25.402976500Z",
     "start_time": "2023-11-27T02:36:25.366934500Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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"
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "小车\n",
      "小车\n",
      "大车\n",
      "大车\n",
      "小车\n"
     ]
    }
   ],
   "source": [
    "inputs,labels = next(iter(test_loader))\n",
    "imshow(torchvision.utils.make_grid(inputs))\n",
    "for i in labels:\n",
    "    print(class_names[i])"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:38:09.107740600Z",
     "start_time": "2023-11-27T02:37:55.381517500Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## alexnet模型"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
      "  warnings.warn(\n",
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=AlexNet_Weights.IMAGENET1K_V1`. You can also use `weights=AlexNet_Weights.DEFAULT` to get the most up-to-date weights.\n",
      "  warnings.warn(msg)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "AlexNet(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(11, 11), stride=(4, 4), padding=(2, 2))\n",
      "    (1): ReLU(inplace=True)\n",
      "    (2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (3): Conv2d(64, 192, kernel_size=(5, 5), stride=(1, 1), padding=(2, 2))\n",
      "    (4): ReLU(inplace=True)\n",
      "    (5): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (6): Conv2d(192, 384, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (7): ReLU(inplace=True)\n",
      "    (8): Conv2d(384, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (9): ReLU(inplace=True)\n",
      "    (10): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): ReLU(inplace=True)\n",
      "    (12): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (avgpool): AdaptiveAvgPool2d(output_size=(6, 6))\n",
      "  (classifier): Sequential(\n",
      "    (0): Dropout(p=0.5, inplace=False)\n",
      "    (1): Linear(in_features=9216, out_features=4096, bias=True)\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): Dropout(p=0.5, inplace=False)\n",
      "    (4): Linear(in_features=4096, out_features=4096, bias=True)\n",
      "    (5): ReLU(inplace=True)\n",
      "    (6): Linear(in_features=4096, out_features=1000, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "alexnet = torchvision.models.alexnet(pretrained=True)\n",
    "print(alexnet)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:39:45.407059600Z",
     "start_time": "2023-11-27T02:39:42.388136200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "outputs": [],
   "source": [
    "for p in alexnet.parameters():\n",
    "    p.requires_grad=False\n",
    "\n",
    "alexnet.classifier= nn.Sequential(\n",
    "    nn.Dropout(p=0.5,inplace=False),\n",
    "    nn.Linear(9216,4096,bias=True),\n",
    "    nn.ReLU(inplace=True),\n",
    "    nn.Dropout(p=0.5,inplace=False),\n",
    "    nn.Linear(4096,4096,bias=True),\n",
    "    nn.ReLU(inplace=True),\n",
    "    nn.Linear(4096,2,bias=True)\n",
    ")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:55:12.335747300Z",
     "start_time": "2023-11-27T02:55:11.955746800Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "outputs": [
    {
     "data": {
      "text/plain": "(61, 9)"
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train_loader),len(test_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T02:59:54.823827100Z",
     "start_time": "2023-11-27T02:59:54.762803Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "outputs": [],
   "source": [
    "def train_loop(model,n_epochs,train_loader,loss_fn,optimizer):\n",
    "    for epoch in range(1,n_epochs+1):\n",
    "        loss_train = 0.0\n",
    "        for i,data in enumerate(train_loader,1):\n",
    "            imgs,labels = data\n",
    "            imgs,labels = imgs.cuda(),labels.cuda()\n",
    "            outputs = model(imgs)\n",
    "            loss = loss_fn(outputs,labels)\n",
    "            optimizer.zero_grad()\n",
    "            loss.backward()\n",
    "            optimizer.step()\n",
    "            loss_train+=loss.item()\n",
    "            if i %5==0:\n",
    "                print('{}, epoch:{}, i:{}, 训练损失:{}'.format(datetime.datetime.now(),epoch,i,loss_train/25))\n",
    "                loss_train=0.0"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T03:02:15.551161300Z",
     "start_time": "2023-11-27T03:02:15.530289700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2023-11-27 11:05:15.264680, epoch:1, i:5, 训练损失:0.13172760248184204\n",
      "2023-11-27 11:05:15.562634, epoch:1, i:10, 训练损失:0.13763914465904237\n",
      "2023-11-27 11:05:16.257635, epoch:1, i:15, 训练损失:0.10008268594741822\n",
      "2023-11-27 11:05:16.711635, epoch:1, i:20, 训练损失:0.06979913711547851\n",
      "2023-11-27 11:05:17.873122, epoch:1, i:25, 训练损失:0.05580085873603821\n",
      "2023-11-27 11:05:18.394118, epoch:1, i:30, 训练损失:0.06793816953897476\n",
      "2023-11-27 11:05:18.931148, epoch:1, i:35, 训练损失:0.04227932885289192\n",
      "2023-11-27 11:05:19.560116, epoch:1, i:40, 训练损失:0.02857161119580269\n",
      "2023-11-27 11:05:20.289389, epoch:1, i:45, 训练损失:0.060648272037506105\n",
      "2023-11-27 11:05:21.158126, epoch:1, i:50, 训练损失:0.018234025724232196\n",
      "2023-11-27 11:05:21.630124, epoch:1, i:55, 训练损失:0.01023973148316145\n",
      "2023-11-27 11:05:22.165163, epoch:1, i:60, 训练损失:0.012093009650707245\n",
      "2023-11-27 11:05:29.936864, epoch:2, i:5, 训练损失:0.018991899415850638\n",
      "2023-11-27 11:05:30.140860, epoch:2, i:10, 训练损失:0.02535903498530388\n",
      "2023-11-27 11:05:30.335855, epoch:2, i:15, 训练损失:0.015190624203532933\n",
      "2023-11-27 11:05:30.566859, epoch:2, i:20, 训练损失:0.009130103592760862\n",
      "2023-11-27 11:05:30.746855, epoch:2, i:25, 训练损失:0.04944641154259443\n",
      "2023-11-27 11:05:30.933859, epoch:2, i:30, 训练损失:0.07649269690038636\n",
      "2023-11-27 11:05:31.116858, epoch:2, i:35, 训练损失:0.014751362530514598\n",
      "2023-11-27 11:05:31.301862, epoch:2, i:40, 训练损失:0.05416768332477659\n",
      "2023-11-27 11:05:31.482856, epoch:2, i:45, 训练损失:0.07017044506967068\n",
      "2023-11-27 11:05:31.668856, epoch:2, i:50, 训练损失:0.0007120502524776384\n",
      "2023-11-27 11:05:31.849856, epoch:2, i:55, 训练损失:0.198948614068795\n",
      "2023-11-27 11:05:32.056905, epoch:2, i:60, 训练损失:0.08236343102529645\n"
     ]
    }
   ],
   "source": [
    "import torch.optim as optim\n",
    "loss_fn = nn.CrossEntropyLoss()\n",
    "optimizer = optim.SGD(alexnet.parameters(),lr=0.001,momentum=0.9)\n",
    "train_loop(model=alexnet.cuda(),n_epochs=2,train_loader=train_loader,loss_fn=loss_fn,optimizer=optimizer)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T03:05:32.765859100Z",
     "start_time": "2023-11-27T03:04:08.468427700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "outputs": [],
   "source": [
    "def test_loop(model,test_loader):\n",
    "    correct = 0\n",
    "    total = 0\n",
    "    with torch.no_grad():\n",
    "        for imgs,labels in test_loader:\n",
    "            imgs,labels = imgs.cuda(),labels.cuda()\n",
    "            outputs = model(imgs)\n",
    "            _,preds = torch.max(outputs,dim=1)\n",
    "            correct+=int((preds==labels).sum())\n",
    "            total +=labels.shape[0]\n",
    "    print('精度:{:.3f}%'.format(correct/total*100))"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T03:09:04.584077900Z",
     "start_time": "2023-11-27T03:09:04.555045300Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:100.000%\n"
     ]
    }
   ],
   "source": [
    "test_loop(alexnet.cuda().eval(),test_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T03:11:11.699258700Z",
     "start_time": "2023-11-27T03:11:06.259263Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:99.013%\n"
     ]
    }
   ],
   "source": [
    "test_loop(alexnet.cuda().eval(),train_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T03:10:33.734332800Z",
     "start_time": "2023-11-27T03:10:26.428213800Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## VGG网络"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
      "  warnings.warn(\n",
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=VGG16_Weights.IMAGENET1K_V1`. You can also use `weights=VGG16_Weights.DEFAULT` to get the most up-to-date weights.\n",
      "  warnings.warn(msg)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "VGG(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (1): ReLU(inplace=True)\n",
      "    (2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (3): ReLU(inplace=True)\n",
      "    (4): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (5): Conv2d(64, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (6): ReLU(inplace=True)\n",
      "    (7): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (8): ReLU(inplace=True)\n",
      "    (9): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (10): Conv2d(128, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (11): ReLU(inplace=True)\n",
      "    (12): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (13): ReLU(inplace=True)\n",
      "    (14): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (15): ReLU(inplace=True)\n",
      "    (16): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (17): Conv2d(256, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (18): ReLU(inplace=True)\n",
      "    (19): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (20): ReLU(inplace=True)\n",
      "    (21): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (22): ReLU(inplace=True)\n",
      "    (23): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "    (24): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (25): ReLU(inplace=True)\n",
      "    (26): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (27): ReLU(inplace=True)\n",
      "    (28): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "    (29): ReLU(inplace=True)\n",
      "    (30): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)\n",
      "  )\n",
      "  (avgpool): AdaptiveAvgPool2d(output_size=(7, 7))\n",
      "  (classifier): Sequential(\n",
      "    (0): Linear(in_features=25088, out_features=4096, bias=True)\n",
      "    (1): ReLU(inplace=True)\n",
      "    (2): Dropout(p=0.5, inplace=False)\n",
      "    (3): Linear(in_features=4096, out_features=4096, bias=True)\n",
      "    (4): ReLU(inplace=True)\n",
      "    (5): Dropout(p=0.5, inplace=False)\n",
      "    (6): Linear(in_features=4096, out_features=1000, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "vgg = torchvision.models.vgg16(pretrained=True)\n",
    "print(vgg)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T03:12:30.460401800Z",
     "start_time": "2023-11-27T03:12:27.151041200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "outputs": [],
   "source": [
    "for p in vgg.parameters():\n",
    "    p.requires_grad = False\n",
    "\n",
    "vgg.classifier = nn.Sequential(\n",
    "    nn.Linear(25088,4096,bias=True),\n",
    "    nn.ReLU(inplace=True),\n",
    "    nn.Dropout(p=0.5,inplace=False),\n",
    "    nn.Linear(4096,4096,bias=True),\n",
    "    nn.Dropout(p=0.5,inplace=False),\n",
    "    nn.Linear(4096,2,bias=True)\n",
    ")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T04:42:28.956827400Z",
     "start_time": "2023-11-27T04:42:28.021827700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2023-11-27 12:44:17.665899, epoch:1, i:5, 训练损失:0.14070817947387695\n",
      "2023-11-27 12:44:18.500897, epoch:1, i:10, 训练损失:0.045587684810161594\n",
      "2023-11-27 12:44:19.344933, epoch:1, i:15, 训练损失:0.020866138339042665\n",
      "2023-11-27 12:44:20.210899, epoch:1, i:20, 训练损失:0.010988481231033803\n",
      "2023-11-27 12:44:21.033902, epoch:1, i:25, 训练损失:0.010706297978758812\n",
      "2023-11-27 12:44:21.871944, epoch:1, i:30, 训练损失:0.0018158993567340075\n",
      "2023-11-27 12:44:22.703897, epoch:1, i:35, 训练损失:0.001922289552167058\n",
      "2023-11-27 12:44:23.536901, epoch:1, i:40, 训练损失:0.004021358196623624\n",
      "2023-11-27 12:44:24.370929, epoch:1, i:45, 训练损失:0.007545910766348243\n",
      "2023-11-27 12:44:25.212951, epoch:1, i:50, 训练损失:0.013702488362323493\n",
      "2023-11-27 12:44:26.053928, epoch:1, i:55, 训练损失:0.0035317328199744227\n",
      "2023-11-27 12:44:26.888899, epoch:1, i:60, 训练损失:0.0034314835612894966\n",
      "2023-11-27 12:44:34.837663, epoch:2, i:5, 训练损失:0.00036026941263116896\n",
      "2023-11-27 12:44:35.656650, epoch:2, i:10, 训练损失:0.0004605323378928006\n",
      "2023-11-27 12:44:36.477670, epoch:2, i:15, 训练损失:0.015202302797697485\n",
      "2023-11-27 12:44:37.298668, epoch:2, i:20, 训练损失:0.0019965235469135223\n",
      "2023-11-27 12:44:38.121674, epoch:2, i:25, 训练损失:0.007924214221493458\n",
      "2023-11-27 12:44:38.948623, epoch:2, i:30, 训练损失:0.00018646173819433898\n",
      "2023-11-27 12:44:39.780670, epoch:2, i:35, 训练损失:0.027067991246294696\n",
      "2023-11-27 12:44:40.615670, epoch:2, i:40, 训练损失:0.0006904960592510179\n",
      "2023-11-27 12:44:41.450660, epoch:2, i:45, 训练损失:0.00035337074456037954\n",
      "2023-11-27 12:44:42.288670, epoch:2, i:50, 训练损失:0.003939110109058674\n",
      "2023-11-27 12:44:43.126622, epoch:2, i:55, 训练损失:0.00024403652136243182\n",
      "2023-11-27 12:44:43.965670, epoch:2, i:60, 训练损失:0.002209315999498358\n"
     ]
    }
   ],
   "source": [
    "optimizer = optim.SGD(vgg.parameters(),lr=0.001,momentum=0.9)\n",
    "train_loop(model=vgg.cuda(),n_epochs=2,train_loader=train_loader,loss_fn=loss_fn,optimizer=optimizer)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T04:44:44.731655600Z",
     "start_time": "2023-11-27T04:43:41.949370400Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:100.000%\n"
     ]
    }
   ],
   "source": [
    "test_loop(vgg.cuda().eval(),test_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T04:45:18.906529700Z",
     "start_time": "2023-11-27T04:45:12.303481200Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:100.000%\n"
     ]
    }
   ],
   "source": [
    "test_loop(vgg.cuda(),train_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T04:45:44.167370600Z",
     "start_time": "2023-11-27T04:45:31.402357300Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## resnet"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
      "  warnings.warn(\n",
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=ResNet101_Weights.IMAGENET1K_V1`. You can also use `weights=ResNet101_Weights.DEFAULT` to get the most up-to-date weights.\n",
      "  warnings.warn(msg)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "ResNet(\n",
      "  (conv1): Conv2d(3, 64, kernel_size=(7, 7), stride=(2, 2), padding=(3, 3), bias=False)\n",
      "  (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "  (relu): ReLU(inplace=True)\n",
      "  (maxpool): MaxPool2d(kernel_size=3, stride=2, padding=1, dilation=1, ceil_mode=False)\n",
      "  (layer1): Sequential(\n",
      "    (0): Bottleneck(\n",
      "      (conv1): Conv2d(64, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "        (1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): Bottleneck(\n",
      "      (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (2): Bottleneck(\n",
      "      (conv1): Conv2d(256, 64, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(64, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(64, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "  )\n",
      "  (layer2): Sequential(\n",
      "    (0): Bottleneck(\n",
      "      (conv1): Conv2d(256, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(256, 512, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): Bottleneck(\n",
      "      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (2): Bottleneck(\n",
      "      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (3): Bottleneck(\n",
      "      (conv1): Conv2d(512, 128, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(128, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(128, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(128, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "  )\n",
      "  (layer3): Sequential(\n",
      "    (0): Bottleneck(\n",
      "      (conv1): Conv2d(512, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(512, 1024, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (2): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (3): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (4): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (5): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (6): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (7): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (8): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (9): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (10): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (11): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (12): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (13): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (14): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (15): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (16): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (17): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (18): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (19): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (20): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (21): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (22): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 256, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(256, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(256, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(256, 1024, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(1024, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "  )\n",
      "  (layer4): Sequential(\n",
      "    (0): Bottleneck(\n",
      "      (conv1): Conv2d(1024, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(2, 2), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "      (downsample): Sequential(\n",
      "        (0): Conv2d(1024, 2048, kernel_size=(1, 1), stride=(2, 2), bias=False)\n",
      "        (1): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      )\n",
      "    )\n",
      "    (1): Bottleneck(\n",
      "      (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "    (2): Bottleneck(\n",
      "      (conv1): Conv2d(2048, 512, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn1): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv2): Conv2d(512, 512, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1), bias=False)\n",
      "      (bn2): BatchNorm2d(512, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (conv3): Conv2d(512, 2048, kernel_size=(1, 1), stride=(1, 1), bias=False)\n",
      "      (bn3): BatchNorm2d(2048, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
      "      (relu): ReLU(inplace=True)\n",
      "    )\n",
      "  )\n",
      "  (avgpool): AdaptiveAvgPool2d(output_size=(1, 1))\n",
      "  (fc): Linear(in_features=2048, out_features=1000, bias=True)\n",
      ")\n"
     ]
    }
   ],
   "source": [
    "resnet = torchvision.models.resnet101(pretrained=True)\n",
    "print(resnet)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T05:57:21.180003800Z",
     "start_time": "2023-11-27T05:57:19.527486500Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "outputs": [],
   "source": [
    "for p in resnet.parameters():\n",
    "    p.requires_grad = False\n",
    "\n",
    "resnet.fc = nn.Linear(2048,2,bias=True)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T05:57:26.100887Z",
     "start_time": "2023-11-27T05:57:26.086852800Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2023-11-27 13:57:38.942019, epoch:1, i:5, 训练损失:0.13447267770767213\n",
      "2023-11-27 13:57:39.487015, epoch:1, i:10, 训练损失:0.15978672385215759\n",
      "2023-11-27 13:57:40.035044, epoch:1, i:15, 训练损失:0.141765176653862\n",
      "2023-11-27 13:57:40.581015, epoch:1, i:20, 训练损失:0.07464317560195922\n",
      "2023-11-27 13:57:41.127016, epoch:1, i:25, 训练损失:0.04977245509624481\n",
      "2023-11-27 13:57:41.674043, epoch:1, i:30, 训练损失:0.07985419809818267\n",
      "2023-11-27 13:57:42.219013, epoch:1, i:35, 训练损失:0.04675905883312225\n",
      "2023-11-27 13:57:42.765015, epoch:1, i:40, 训练损失:0.09268061727285386\n",
      "2023-11-27 13:57:43.310014, epoch:1, i:45, 训练损失:0.041861013770103456\n",
      "2023-11-27 13:57:43.858014, epoch:1, i:50, 训练损失:0.047831163704395295\n",
      "2023-11-27 13:57:44.403053, epoch:1, i:55, 训练损失:0.05721545889973641\n",
      "2023-11-27 13:57:44.947020, epoch:1, i:60, 训练损失:0.04053036719560623\n",
      "2023-11-27 13:57:50.644013, epoch:2, i:5, 训练损失:0.02961780697107315\n",
      "2023-11-27 13:57:51.189019, epoch:2, i:10, 训练损失:0.03323842525482178\n",
      "2023-11-27 13:57:51.734016, epoch:2, i:15, 训练损失:0.01794116325676441\n",
      "2023-11-27 13:57:52.280015, epoch:2, i:20, 训练损失:0.015966645553708077\n",
      "2023-11-27 13:57:52.825013, epoch:2, i:25, 训练损失:0.03550158489495516\n",
      "2023-11-27 13:57:53.384082, epoch:2, i:30, 训练损失:0.02369554474949837\n",
      "2023-11-27 13:57:53.929013, epoch:2, i:35, 训练损失:0.06891951739788055\n",
      "2023-11-27 13:57:54.472017, epoch:2, i:40, 训练损失:0.0085961639508605\n",
      "2023-11-27 13:57:55.019029, epoch:2, i:45, 训练损失:0.053139535188674925\n",
      "2023-11-27 13:57:55.565019, epoch:2, i:50, 训练损失:0.01405461698770523\n",
      "2023-11-27 13:57:56.109014, epoch:2, i:55, 训练损失:0.008865475729107857\n",
      "2023-11-27 13:57:56.653013, epoch:2, i:60, 训练损失:0.04703670158982277\n"
     ]
    }
   ],
   "source": [
    "optimizer = optim.SGD(resnet.parameters(),lr=0.001,momentum=0.9)\n",
    "train_loop(model=resnet.cuda(),loss_fn=loss_fn,optimizer=optimizer,train_loader=train_loader,n_epochs=2)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T05:57:57.381042800Z",
     "start_time": "2023-11-27T05:57:31.136769Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:97.727%\n"
     ]
    }
   ],
   "source": [
    "test_loop(resnet.cuda().eval(),test_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T05:59:23.791052800Z",
     "start_time": "2023-11-27T05:59:16.717710700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:100.000%\n"
     ]
    }
   ],
   "source": [
    "test_loop(resnet.cuda().eval(),train_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T05:59:45.998878Z",
     "start_time": "2023-11-27T05:59:34.361863700Z"
    }
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "## squeezenet"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "markdown",
   "source": [
    "### squeezenet通过三种方法优化模型\n",
    "<ul>\n",
    "<li>使用1*1的卷积核代替3*3的卷积核,减少模型参数</li>\n",
    "<li>减少输入的通道数,减少模型参数</li>\n",
    "<li>延后池化操作,可以保留更多的信息</li>\n",
    "<li>使用全局平均池化代替以往的全连接层</li>\n",
    "</ul>"
   ],
   "metadata": {
    "collapsed": false
   }
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "SqueezeNet(\n",
      "  (features): Sequential(\n",
      "    (0): Conv2d(3, 64, kernel_size=(3, 3), stride=(2, 2))\n",
      "    (1): ReLU(inplace=True)\n",
      "    (2): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)\n",
      "    (3): Fire(\n",
      "      (squeeze): Conv2d(64, 16, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(16, 64, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(16, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "    (4): Fire(\n",
      "      (squeeze): Conv2d(128, 16, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(16, 64, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(16, 64, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "    (5): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)\n",
      "    (6): Fire(\n",
      "      (squeeze): Conv2d(128, 32, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(32, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "    (7): Fire(\n",
      "      (squeeze): Conv2d(256, 32, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(32, 128, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(32, 128, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "    (8): MaxPool2d(kernel_size=3, stride=2, padding=0, dilation=1, ceil_mode=True)\n",
      "    (9): Fire(\n",
      "      (squeeze): Conv2d(256, 48, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(48, 192, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(48, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "    (10): Fire(\n",
      "      (squeeze): Conv2d(384, 48, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(48, 192, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(48, 192, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "    (11): Fire(\n",
      "      (squeeze): Conv2d(384, 64, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(64, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "    (12): Fire(\n",
      "      (squeeze): Conv2d(512, 64, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (squeeze_activation): ReLU(inplace=True)\n",
      "      (expand1x1): Conv2d(64, 256, kernel_size=(1, 1), stride=(1, 1))\n",
      "      (expand1x1_activation): ReLU(inplace=True)\n",
      "      (expand3x3): Conv2d(64, 256, kernel_size=(3, 3), stride=(1, 1), padding=(1, 1))\n",
      "      (expand3x3_activation): ReLU(inplace=True)\n",
      "    )\n",
      "  )\n",
      "  (classifier): Sequential(\n",
      "    (0): Dropout(p=0.5, inplace=False)\n",
      "    (1): Conv2d(512, 1000, kernel_size=(1, 1), stride=(1, 1))\n",
      "    (2): ReLU(inplace=True)\n",
      "    (3): AdaptiveAvgPool2d(output_size=(1, 1))\n",
      "  )\n",
      ")\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:208: UserWarning: The parameter 'pretrained' is deprecated since 0.13 and may be removed in the future, please use 'weights' instead.\n",
      "  warnings.warn(\n",
      "E:\\myAnaconda\\envs\\PyTorch\\lib\\site-packages\\torchvision\\models\\_utils.py:223: UserWarning: Arguments other than a weight enum or `None` for 'weights' are deprecated since 0.13 and may be removed in the future. The current behavior is equivalent to passing `weights=SqueezeNet1_1_Weights.IMAGENET1K_V1`. You can also use `weights=SqueezeNet1_1_Weights.DEFAULT` to get the most up-to-date weights.\n",
      "  warnings.warn(msg)\n"
     ]
    }
   ],
   "source": [
    "squeezenet = torchvision.models.squeezenet1_1(pretrained=True)\n",
    "print(squeezenet)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T06:08:55.527077Z",
     "start_time": "2023-11-27T06:08:55.337082100Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "outputs": [],
   "source": [
    "for p in squeezenet.parameters():\n",
    "    p.requires_grad = False\n",
    "\n",
    "squeezenet.classifier = nn.Sequential(\n",
    "    nn.Dropout(p=0.5,inplace=False),\n",
    "    nn.Conv2d(512,2,kernel_size=(1,1),stride=(1,1)),\n",
    "    nn.ReLU(inplace=True),\n",
    "    nn.AdaptiveAvgPool2d(output_size=(1,1))\n",
    ")"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T07:16:27.081088800Z",
     "start_time": "2023-11-27T07:16:26.945092300Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2023-11-27 15:17:58.663121, epoch:1, i:5, 训练损失:0.14889237880706788\n",
      "2023-11-27 15:17:58.731120, epoch:1, i:10, 训练损失:0.14836290955543519\n",
      "2023-11-27 15:17:58.819121, epoch:1, i:15, 训练损失:0.08245060592889786\n",
      "2023-11-27 15:17:58.964122, epoch:1, i:20, 训练损失:0.044841427206993106\n",
      "2023-11-27 15:17:59.332125, epoch:1, i:25, 训练损失:0.031803674791008235\n",
      "2023-11-27 15:17:59.585120, epoch:1, i:30, 训练损失:0.004659982211887836\n",
      "2023-11-27 15:17:59.711123, epoch:1, i:35, 训练损失:0.01192221132107079\n",
      "2023-11-27 15:18:00.175122, epoch:1, i:40, 训练损失:0.004522858855780214\n",
      "2023-11-27 15:18:00.243125, epoch:1, i:45, 训练损失:0.001012753532268107\n",
      "2023-11-27 15:18:00.329130, epoch:1, i:50, 训练损失:0.002805239212466404\n",
      "2023-11-27 15:18:00.474119, epoch:1, i:55, 训练损失:0.014118914688006044\n",
      "2023-11-27 15:18:00.842126, epoch:1, i:60, 训练损失:0.0043454618437681345\n",
      "2023-11-27 15:18:06.706665, epoch:2, i:5, 训练损失:0.03886940577824134\n",
      "2023-11-27 15:18:06.881678, epoch:2, i:10, 训练损失:0.011374206095933915\n",
      "2023-11-27 15:18:07.064665, epoch:2, i:15, 训练损失:0.0016595382895320653\n",
      "2023-11-27 15:18:07.151664, epoch:2, i:20, 训练损失:0.002637870467733592\n",
      "2023-11-27 15:18:07.282670, epoch:2, i:25, 训练损失:0.0020904336427338423\n",
      "2023-11-27 15:18:07.864664, epoch:2, i:30, 训练损失:0.0015613749314798042\n",
      "2023-11-27 15:18:07.932664, epoch:2, i:35, 训练损失:0.013406076630344614\n",
      "2023-11-27 15:18:08.371666, epoch:2, i:40, 训练损失:0.02300781105615897\n",
      "2023-11-27 15:18:08.444667, epoch:2, i:45, 训练损失:0.002017549220472574\n",
      "2023-11-27 15:18:08.543665, epoch:2, i:50, 训练损失:0.0041144045739201825\n",
      "2023-11-27 15:18:08.677676, epoch:2, i:55, 训练损失:0.0029835251299664377\n",
      "2023-11-27 15:18:08.828663, epoch:2, i:60, 训练损失:0.00087134521570988\n"
     ]
    }
   ],
   "source": [
    "optimizer = optim.SGD(squeezenet.parameters(),lr=0.001,momentum=0.9)\n",
    "train_loop(model=squeezenet.cuda().eval(),n_epochs=2,train_loader=train_loader,loss_fn=loss_fn,optimizer=optimizer)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T07:18:09.573694Z",
     "start_time": "2023-11-27T07:17:47.641758Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:100.000%\n"
     ]
    }
   ],
   "source": [
    "test_loop(model=squeezenet.cuda().eval(),test_loader=test_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T07:20:46.512153800Z",
     "start_time": "2023-11-27T07:20:40.491538700Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "精度:100.000%\n"
     ]
    }
   ],
   "source": [
    "test_loop(model=squeezenet.cuda().eval(),test_loader=train_loader)"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "end_time": "2023-11-27T07:21:14.639480700Z",
     "start_time": "2023-11-27T07:21:06.186824400Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
